package homework.h01;

import java.math.BigDecimal;
import java.util.Scanner;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/1 15:40
 * @package h01
 * @description 编写一个程序，提示用户输入一个小数，然后输出与该数字最近的整数
 *
 */

public class FindNearestNumber {

    /**
     * 方法1 : 取整数和小数部分，小数部分与0.5 比较，大则整数 +1，小则不变
     *
     * 原理 : 四舍五入
     * @param inputNum
     * @return
     */
    public static int findNearestNumber1(double inputNum){
        // 获取数字的整数部分和小数部分
        int integerNum = (int)inputNum;
        double decimalNum = inputNum - integerNum;

        if (decimalNum > 0.5){
            integerNum += 1;
        }

        return integerNum;
    }

    /**
     * 方法2 ： 直接实现四舍五入
     * @param inputNum
     * @return
     */
    public static int findNearestNumber2(double inputNum){
        String strNum = String.valueOf(inputNum);
        BigDecimal bigDecimal = new BigDecimal(strNum);
        double f0 = bigDecimal.setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue();

        return (int)f0;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入一个正小数");
        double inputNum = scanner.nextDouble();

        // 测试方法1
        int nearestNumber1 = findNearestNumber1(inputNum);
        System.out.println(nearestNumber1);

        // 测试方法2
        int nearestNumber2 = findNearestNumber2(inputNum);
        System.out.println(nearestNumber2);

    }


}
